home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 2001 #11 / CD 11 (Black) - 2001.iso / FAVORG / FAVO_SRC.ZIP / FavOrgTreeCtl.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-11-26  |  7.9 KB  |  259 lines

  1. // FAVORG Version 1.1
  2. // Copyright (c) 2000 Ziff Davis Media, Inc.
  3. // All rights reserved.
  4. // First Published in PC Magazine, US Edition, November 7, 2000.
  5. // Programmer: Patrick Philippot
  6.  
  7. #if !defined(AFX_FavOrgTREECTL_H__4C2CD454_403B_11D4_9041_00A0249EABF4__INCLUDED_)
  8. #define AFX_FavOrgTREECTL_H__4C2CD454_403B_11D4_9041_00A0249EABF4__INCLUDED_
  9.  
  10. #if _MSC_VER > 1000
  11. #pragma once
  12. #endif // _MSC_VER > 1000
  13. // FavOrgTreeCtl.h : header file
  14. //
  15.  
  16. #include <comdef.h>
  17. #include <intshcut.h>
  18. #include "shelldef.h"
  19. #include "TreeCtrlEdit.h"
  20. #include <ras.h>
  21.  
  22. // Icon and Bitmap related structures
  23. // Used for the security check made by Favorg
  24.  
  25. typedef struct tagICONDIRENTRY
  26. {
  27.     BYTE  bWidth;
  28.     BYTE  bHeight;
  29.     BYTE  bColorCount;
  30.     BYTE  bReserved;
  31.     WORD  wPlanes;
  32.     WORD  wBitCount;
  33.     DWORD dwBytesInRes;
  34.     DWORD dwImageOffset;
  35. } ICONDIRENTRY;
  36.  
  37. typedef struct ICONHEADER
  38. {
  39.     WORD          idReserved;
  40.     WORD          idType;
  41.     WORD          idCount;
  42.     ICONDIRENTRY  idEntries[1];
  43. } ICONHEADER;
  44.  
  45. #define BM 0x4D42
  46.  
  47. typedef DWORD (APIENTRY* RASENUMENTRIES) (LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD, LPDWORD);
  48. typedef DWORD (APIENTRY* RASENUMCONNECTIONS) (LPRASCONNA, LPDWORD, LPDWORD);
  49.  
  50. /////////////////////////////////////////////////////////////////////////////
  51. // CFavOrgTreeCtl window
  52.  
  53. class CFavOrgTreeCtl : public CMultiselTreeCtrl
  54. {
  55. // Construction
  56. public:
  57.     CFavOrgTreeCtl();
  58.  
  59. // Attributes
  60. public:
  61.  
  62. private:
  63.     CString                m_sFavPath;
  64.     CString                m_sPickedShortcut;
  65.  
  66.     CImageList            m_imgStd;
  67.     CImageList            m_imgState;
  68.     HTREEITEM            m_hRootItem;
  69.     BOOL                m_bConnected;
  70.     BOOL                m_bDoNotCheck;
  71.     BOOL                m_bCancel;
  72.     DWORD                m_dwConnection;
  73.     BOOL                m_bDialed;
  74.     BOOL                m_bLetUserScroll;
  75.     CInternetSession*    m_pInet;
  76.  
  77.     CProgressCtrl*        m_pProgressCtl;
  78.  
  79.     CStringEx            m_sIconStore;
  80.     int                    m_nNumItems;
  81.     int                    m_nLoadedItems;
  82.     BOOL                m_bProcessing;
  83.     BOOL                m_bCanRedirect;
  84.     int                    m_nTimeout;
  85.     CTreeCtrlEdit        m_ctlEdit;
  86.     CStringEx            m_sOldLabel;
  87.     CStringEx            m_sOldFilename;
  88.  
  89.     HTREEITEM            m_hLastCtxtItem;
  90.  
  91.     CMap<CString, LPCSTR, int, int&>
  92.                         m_StatusMap;
  93.     CMapStringToString    m_InfoMap;
  94.     CStringEx            m_sStatusFile;
  95.     CStringEx            m_sInfoFile;
  96.  
  97.     int                    m_nFolderIconSel;
  98.     int                    m_nFolderIconNotSel;
  99.     int                    m_nStdIconNotSel;
  100.  
  101.     CString                m_sCurrentMsg;
  102.  
  103.     HMODULE                m_hRasDll;
  104.     RASENUMENTRIES        m_pRasEnumEntries;
  105.     RASENUMCONNECTIONS    m_pRasEnumConnections;
  106.  
  107. // Operations
  108. public:
  109.  
  110. // Overrides
  111.     // ClassWizard generated virtual function overrides
  112.     //{{AFX_VIRTUAL(CFavOrgTreeCtl)
  113.     public:
  114.     virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
  115.     protected:
  116.     virtual void PreSubclassWindow();
  117.     //}}AFX_VIRTUAL
  118.  
  119. // Implementation
  120. public:
  121.     virtual ~CFavOrgTreeCtl();
  122.  
  123.     int                GetItemCount() {return m_nNumItems;};
  124.     void            CancelAction();
  125.  
  126.     BOOL            FvInternetConnect(BOOL* bDialed);
  127.  
  128.     void            SetRedirFlag(BOOL bOn){m_bCanRedirect = bOn;};
  129.     int                SetTimeout(int nTimeout);
  130.     CProgressCtrl*    SetProgressBar(CProgressCtrl* pProgressBar);
  131.     CStringEx        SetIconStore(CStringEx sIconStore);
  132.  
  133.     void            LoadFavorites(CString sIniFilename);
  134.     void            CheckAndFindIcons(BOOL bDeadLinksOnly);
  135.     void            ProcessItems(BOOL bDeadLinksOnly);
  136.     void            AssignCustomIcon(CString sIconFilename, int nIconIndex, HTREEITEM hItem);
  137.     void            AssignThisImage(HTREEITEM hItem);
  138.     void            PickCurrentIcon(HTREEITEM hItem);
  139.     void            RemoveSelected();
  140.     void            DeleteByState();
  141.     void            UpdateUrl(HTREEITEM hItem);
  142.     void            ResetDeadLinks();
  143.  
  144.     BOOL            GetConnectState();
  145.     void            SetConnectCheck(BOOL bNoConnectCheck);
  146.  
  147.     BOOL            SelectionExist(BOOL& bOneShortcut, BOOL& bOneFolder);
  148.  
  149.     void            GenerateLog(CString sLogName);
  150.     void            StoreStatus();
  151.     void            StoreItemStatus(HTREEITEM hItem, BOOL bIsShortcut);
  152.     void            StoreItemsStatus(HTREEITEM hItem);
  153.     
  154.     BOOL            IsPickedIcon() {return !m_sPickedShortcut.IsEmpty();};
  155.  
  156.     BOOL            ExecLocalCommand(UINT nID, BOOL bFromContextMenu);
  157.  
  158.     void            ExpandAll();
  159.     void            ExpandCurrent();
  160.     void            CollapseAll();
  161.     void            CollapseCurrent();
  162.  
  163.     int                GetCommonStatus(HTREEITEM hItem);
  164.     void            GetFoldersCommonStatus(HTREEITEM hItem, BOOL& bOK, int& nFirstStatus);
  165.     void            GetItemCommonStatus(HTREEITEM hItem, BOOL& bOK, int& nFirstStatus);
  166.     int                GetMenuToCheckFromState(int nState);
  167.  
  168.     virtual void    ClearSelection(BOOL bCleanTree);
  169.  
  170. protected:
  171.     void        Initialize();
  172.  
  173.     int            AddStateIcon(int nId);
  174.     int            CountShortcuts(CStringEx sRootPath);
  175.     void        AddItemsFromPath(HTREEITEM hItem, CString sRootPath, CString sIniFilename);
  176.     HTREEITEM    AddItem(CStringEx sPath, HTREEITEM hParent, CString sIniFilename, bool bIsDir = FALSE, int nIcon = -1, int nIcon2 = -1);
  177.     int            CountSelected();
  178.     int            CountFolder(CStringEx sPath);
  179.     CString        MakeFullItemName(HTREEITEM hItem, BOOL bIsShortcut);
  180.  
  181.     void        UpdateItem(HTREEITEM hItem, BOOL bDeadLinksOnly);
  182.     void        ProcessItem(HTREEITEM hItem, BOOL bDeadLinksOnly);
  183.     BOOL        CheckURL(CHttpConnection** ppHttpConnect, DWORD dwServiceType, CStringEx sUrl, CStringEx sServer, CStringEx sObject, int nPort, HTREEITEM hItem);
  184.     BOOL        GetOrSetURLFromShortcut(CString sFilename, CString& sURL, BOOL bGet);
  185.  
  186.     void        SetItemIcon(HTREEITEM hItem, CString sIconName, HICON hIcon, int nIndex, IShellLinkPtr psl);
  187.     void        ProcessItemIcon(HTREEITEM hItem, HICON hIcon, CString sIconFilename, int nIndex);
  188.     void        UpdateItemIcon(HTREEITEM hItem, HICON hIcon, CString sIconFilename, int nIndex);
  189.  
  190.     void        ProcessDeadLink(HTREEITEM hItem);
  191.     void        ProcessDeadLinks(HTREEITEM hItem);
  192.  
  193.     void        ModifyStates(HTREEITEM hItem, int nStateIndex);
  194.  
  195.     void        RemoveItem(HTREEITEM hItem);
  196.     void        DestroyItem(HTREEITEM hItem, BOOL bIsDir);
  197.     void        ProcessItemsByState(HTREEITEM hItem, BOOL bAccessDenied, BOOL bTimeout, BOOL bPageNotFound, BOOL bSiteNone);
  198.     void        ProcessItemByState(HTREEITEM hItem, BOOL bAccessDenied, BOOL bTimeout, BOOL bPageNotFound, BOOL bSiteNone);
  199.  
  200.     void        DisplayMsg(int nTitleId, CString sContent);
  201.     void        ClearMsg();
  202.  
  203.     void        PeekAndYield();
  204.     void        ClearItemdata(HTREEITEM hItem);
  205.  
  206.     void        GenerateLogEntries(CFile* pLogfile, HTREEITEM hItem);
  207.     void        GenerateLogEntry(CFile* pLogfile, HTREEITEM hItem);
  208.     void        OutputString(CString sText, CFile* pLogfile);
  209.  
  210.     BOOL        IsIconOrBmp(BYTE* pBuffer, DWORD dwLen);
  211.     void        CollapseOrExpandAll(HTREEITEM hItem, BOOL bCollapse);
  212.  
  213.  
  214.     // Generated message map functions
  215. protected:
  216.     //{{AFX_MSG(CFavOrgTreeCtl)
  217.     afx_msg void OnDestroy();
  218.     afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  219.     afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  220.     afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  221.     afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  222.     afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  223.     afx_msg void OnBeginLabelEdit(NMHDR* pNMHDR, LRESULT* pResult);
  224.     afx_msg void OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult);
  225.     afx_msg void OnSelChanged(NMHDR* pNMHDR, LRESULT* pResult);
  226.     afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  227.     afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  228.     //}}AFX_MSG
  229.  
  230.     DECLARE_MESSAGE_MAP()
  231. };
  232.  
  233. #define STATE_INDEX_QUESTION            1
  234. #define STATE_INDEX_CHECKED                2
  235. #define STATE_INDEX_PAGENONE            3
  236. #define STATE_INDEX_MOVED                4
  237. #define STATE_INDEX_SITENONE            5
  238. #define STATE_INDEX_TIMEOUT                6
  239. #define STATE_INDEX_ACCESSDENIED        7
  240. #define STATE_INDEX_MOVED_UPDATED        8
  241. #define STATE_INDEX_UNCHECKED            9
  242. #define STATE_INDEX_RESET                10
  243.  
  244. #define ITEM_IS_FOLDER                    -1
  245.  
  246. #define MAX_URL_LEN                        2048
  247.  
  248. #define WM_CAN_UNLOCK                    WM_USER + 1
  249. #define    WM_DISP_MSG                        WM_USER + 2
  250. #define WM_DISP_ICON                    WM_USER + 3
  251. #define WM_REFRESH_COUNT                WM_USER + 4
  252.  
  253. /////////////////////////////////////////////////////////////////////////////
  254.  
  255. //{{AFX_INSERT_LOCATION}}
  256. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  257.  
  258. #endif // !defined(AFX_FavOrgTREECTL_H__4C2CD454_403B_11D4_9041_00A0249EABF4__INCLUDED_)
  259.